package Futbol_Liga;

/**
 * Jokalariez osatutako klasea da. Puntuak gordeko ditu ligan daukan postua jakiteko eta taldearen izena. 
 * Talde bateko bere jokalariak saldu ahal ditu merkatuan jarriz eta fitxatu jokalari berriak gehitzeko. 
 * Talde baten jokalaria bilatzeko metodoa dauka, partidua jokatu eta gero puntu berriak totalera gehitzeko metodoa eta puntuazioa eguneratzeko metodoa. 
 * Bi talderen arteko puntuak konparatzeko metodo bat ere eukiko du.
 * @author Txantxangorriak
 *
 */
import java.util.Iterator;

public class Taldea implements Comparable<Taldea> {
	private String izena;
	private JokalariZerrenda jokalariak;
	private int puntuak;
	/**
	 * metodo eraikitzailea
	 * @param pIzena
	 */
	public Taldea(String pIzena) {
		izena=pIzena;
		puntuak=0;
		jokalariak=new JokalariZerrenda();
	}
	/**
	 * Metodo honekin jokalari bat fitxatu egiten da, hau da, jokalari zerrendara gehituz
	 * @param pJokIz
	 */
	public void jokalariaFitxatu(String pJokIz){
		Jokalaria jok=null;
		Merkatua mer= Merkatua.getMerkatua();
		Iterator<Jokalaria> it=mer.getIteratzailea();
		boolean topatua=false;
		while(it.hasNext() && topatua==false){
			jok=it.next();
		if(jok.getIzena().equals(pJokIz)){
			topatua=true;
		}
		}
		jokalariak.jokalariaGehitu(jok);
		mer.fitxatu(jok);
	}
	/**
	 * Goiko metodoaren antzera, jokalaria saldu egiten da, baina honetan jokalaria zerrendatik ezabatuko da
	 * @param pJokIz
	 * @return Jokalaria
	 */
	public Jokalaria jokalariaSaldu(String pJokIz){
	Jokalaria pJok=jokalariak.getJokalaria(pJokIz);
		jokalariak.jokalariEzabatu(pJok);
		
		return pJok;
		
	}
	/**
	 * Jokalaria badagoen edo ez bueltatuko du
	 * @param pIzena
	 * @return boolean
	 */
	public boolean jokalariaDago(String pIzena){
		boolean emaitza=jokalariak.jokalariaDago(pIzena);
		return emaitza;
	}
	/**
	 * Puntuak gehitu egingo ditu 
	 * @param pZenbat
	 */
    public void puntuakGehitu(int pZenbat){
		puntuak=puntuak+pZenbat;
	}
    /**
     * Puntuak ezabatuko ditu, zerora jarriz
     */
	public void puntuakEzabatu() {
		puntuak=0;
	}
	/**
	 * Jokalari berria gehituko da zerrendara
	 * @param pJok
	 */
	public void jokalariBerria(Jokalaria pJok){
		jokalariak.jokalariaGehitu(pJok);
	
	}
	/**
	 * Talde baten izena lortuko da
	 * @return String
	 */
	public String getIzena() {
		return izena;
	}
	/**
	 * Taldearen puntuazioa lortuko da
	 * @return int
	 */
	public int getPuntuazioa() {
		return puntuak;
	}
	/**
	 * Jokalari zerrenda lortuko da
	 * @return JokalariZerrenda
	 */
	public JokalariZerrenda getJokalariak() {
		return jokalariak;
	}
	/**
	 * Taldeko jokalari zerrenda ezarriko da
	 * @param jokalariak
	 */
	public void setJokalariak(JokalariZerrenda jokalariak) {
		this.jokalariak = jokalariak;
	}
	/**
	 * Metodo honekin, bi talde konparatuko ditu puntuazioaren arabera. 
	 */
	@Override
	public int compareTo(Taldea o) {
		return (puntuak-o.puntuak);
	}
	/**
	 * Talde bate puntuazioa eguneratu egingo da
	 * @param pI
	 */
	public void puntuazioaEguneratu(int pI) {
		puntuak=puntuak+pI;
		
	}

	
}
